package com.kantboot.system.user.service;

import com.kantboot.system.user.domain.dto.SysPermissionSearchDTO;
import com.kantboot.system.user.domain.entity.SysPermission;
import com.kantboot.util.core.param.PageParam;
import com.kantboot.util.core.result.PageResult;

import java.util.List;

/**
 * 权限服务
 */
public interface ISysPermissionService {

    /**
     * 获取一个角色的所有权限
     */
    List<SysPermission> getByRoleCode(String roleCode);

    /**
     * 根据用户ID获取用户权限
     */
    List<SysPermission> getByUserId(Long userId);

    /**
     * 获取用户自身的权限
     */
    List<SysPermission> getSelf();

    /**
     * 根据用户ID获取URI
     */
    List<String> getUriListByUserId(Long userId);

    /**
     * 获取用户自身的uri
     */
    List<String> getSelfUriList();

    /**
     * 获取所有不需要登录的uri
     */
    List<String> getNotNeedLoginUriList();

    /**
     * 根据用户id获取权限编码列表
     */
    List<String> getCodeListByUserId(Long userId);

    /**
     * 获取自身的权限编码列表
     */
    List<String> getSelfCodeList();


    PageResult getBodyData(PageParam<SysPermissionSearchDTO> pageParam);

    /**
     * 根据code列表获取权限
     */
    List<SysPermission> getListByCodeList(List<String> codeList);


}
